﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
    public interface IHMMManager
    {
        /**
        /// Put an HMM into this manager
         *
        /// @param hmm the hmm to manage
         */
        void put(IHMM hmm);


        /**
        /// Retrieves an HMM by position and unit
         *
        /// @param position the position of the HMM
        /// @param unit     the unit that this HMM represents
        /// @return the HMM for the unit at the given position or null if no HMM at the position could be found
         */
        IHMM get(HMMPosition position, IUnit unit);


        /**
        /// Gets an iterator that iterates through all HMMs
         *
        /// @return an iterator that iterates through all HMMs
         */
        IEnumerator<IHMM> iterator();

        /**
        /// Log information about this manager
         *
        /// @param logger logger to use for this logInfo
         */
        void logInfo();

    }
}
